﻿package com.taihua_tech.basic.aspect;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

//封装共同处理:将异常信息写入文件中(日志)
@Component
@Aspect
public class ExceptionHanlder {

	//定义规则:public void 方法名(异常类型参数)//异常通知
	@AfterThrowing(throwing="e", pointcut="within(com.taihua_tech.basic.controller..*)")
	public void handler(Exception e){
		//e变量就是目标组件抛出的异常对象
		try {//以追加方式写入
			FileWriter fw = 
				new FileWriter("note.log",true);
			PrintWriter pw = new PrintWriter(fw);
			//打印错误标题
			pw.println("************************************");
			pw.println("异常类型:"+e);
			pw.println("发生时间:"+new Date());
			pw.println("************************************");
			e.printStackTrace(pw);//将异常栈信息写入note.log
			pw.flush();
			pw.close();
			fw.close();
		} catch (IOException e1) {
			System.out.println("记录异常日志失败");
		}
	}
	
}
